High quality digital video data (e.g., video files or streaming data) are relatively large in size. As a result, transmitting and storing digital video consumes a significant amount of bandwidth and memory. Typically, devices compress a digital video signal prior to transmission and/or storage in order to reduce the size of the digital video signal and thereby conserve bandwidth and memory. Accordingly, the digital video may require decompression prior to playback.
Many different coding schemes exist for compressing and decompressing digital video. Some coding schemes reduce the size of the digital video more than other coding schemes, but typically these coding schemes require more computational power to perform the compression and/or decompression than other, often older, compression schemes. Because of this tradeoff, and the chronological evolution of coding schemes, different devices often use different coding schemes to compress or decompress a digital video. For example, a video camera may use the MPEG-2 coding scheme to record videos, and a television may use the H.264 coding scheme to display videos. As a result, the digital video may need to be converted from one coding scheme to another coding scheme (i.e., transcoded) to maintain compatibility between different devices.
Typically, a transcoder will decompress a compressed digital video signal using one coding scheme and then recompress the now-uncompressed digital video using a different coding scheme. For example, a device may decompress a digital video using the MPEG-2 coding scheme and then recompress the digital video using the H.264 coding scheme. However, this brute force approach requires a significant amount of computational power, because the digital video signal is completely decompressed and then completely recompressed.
Some existing transcoding schemes detect the presence of all-zero blocks (AZB) to reduce the complexity of encoding. However, existing methods detect all-zero blocks by comparing a sum of absolute differences (SAD) to a predefined threshold after performing motion estimation. Motion estimation consumes a significant amount of computational power. In many cases, motion estimation consumes the majority of the computational power used in the video encoding process.